iT邦幫忙

2022 iThome 鐵人賽

DAY 12
0
Software Development

Java入門的30張門票系列 第 12

[Day12] 什麼是建構子

  • 分享至 

  • xImage
  •  

什麼是建構子Constructor?簡單來說就是建立類別物件的方法。
它是一個類別中的功能,在建立時建構子的名稱要和類別(class)同名,宣告方法如下:

// [modifier] constructor_name ([arguments]){...}
public class Goods{
    public Goods(){  // constructor
    
    }
}
  • 一個類別可以宣告多個建構子
  • 可有零或多個參數
  • 跟方法(method)一樣可以有存取控制修飾子(public, private)
  • 沒有回傳值,如果有回傳值就變得跟一般方法一樣

在呼叫建構子時需要使用new關鍵字,來生成物件,同時會初始化

Test test = new Test();

多載建構子

這邊就會結合一下前兩篇提到的overloading,多載指的就是可以有很多個同樣名字的方法,各自去接不同的參數。這邊要先了解以下兩種this的差異:

  • this關鍵字(this.): 當建構子參數與物件資料同名時,可以用this區別(this指的是物件資料並不是參數)
  • this建構子(this()): 可以呼叫相同類別底下的另一個建構元

當傳入的參數有int和double就會呼叫到第一個建構子,如果只有傳入int則是呼叫第二個,這時程式會再呼叫第一個建構子並把第二個參數填入0.0,剩下兩個情況也是一樣,如果少哪個參數就自動填入再呼叫第一個建構子。看起來很複雜其實非常簡單也很方便~

public class Goods {
	  public int gno;
	  public double gprice;

	  public Goods (int gno, double gprice) {
		  this.gno = gno;
		  this.gprice = gprice;
	  }
	     
	  public Goods (int gno) {
		  this(gno, 0.0);  // 呼叫 public Goods (int gno, double gprice) {}
	  }
	    
	  public Goods (double gprice) {
		  this(0, gprice);  // 呼叫 public Goods (int gno, double gprice) {}
	  }
	 
	  public Goods () {
		  this(0, 0.0);  // 呼叫 public Goods (int gno, double gprice) {}
	  }
}

上一篇
[Day11] 把錢裝進保險箱 - 封裝
下一篇
[Day13] Java 陣列宣告 & 基本使用
系列文
Java入門的30張門票30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言